package com.touchfired.common.constants;

import io.netty.channel.Channel;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * @Description 客户端信息
 * @Author 幸佳俊
 */
@Data
@Accessors(chain = true)
public class ClientInfo implements Serializable {

    /** 客户端通道id */
    private String longId;

    /** 客户端姓名 */
    private String name;

    /** 客户端ip */
    private String host;

    /** 客户端当前房间id */
    private String roomId;



    /** 当前事件码 */
    private EventCode eventCode;

    /** 事件链 */
    private EventNode eventNode = new EventNode();

    /** 当前客户端通道 */
    private transient Channel channel;

    /**
     * 追加事件链
     * @param eventCode 当前事件码
     */
    public void appendEventNode(EventCode eventCode) {
        if (eventCode != null) {
            List<EventCode> eventCodes = this.eventNode.getEventCodes();
            eventCodes.add(eventCode);

            if (eventCodes.size() > this.eventNode.getMaxEventCodeIndex()) {
                eventCodes.remove(0);
            }

            this.eventCode = eventCode;
        }
    }
}
